#define _CRT_SECURE_NO_WARNINGS


//#include<iostream>
//using namespace std;
//class B
//{
//public:
//	B()
//	{
//		cout << "default constructor" << " ";
//	}
//	~B()
//	{
//		cout << "destructed" << " ";
//	}
//	B(int i) : data(i)
//	{
//		cout << "constructed by parameter" << data << " ";
//	}
//private: int data;
//};
//B Play(B b)
//{
//	return b;
//}
//int main(int argc, char* argv[])
//{
//	B temp = Play(5);
//	return 0;
//}

//#include <iostream>
//using namespace std;
//class A
//{
//public:
//	A();
//
//	A(A&);
//
//	A& operator=(const A& a);
//
//	~A();
//private:
//	int _a;
//};
//
//A::A()
//{
//
//}
//
//A::A(A&)
//{
//
//}
//
//A::~A()
//{
//
//}
//
//A& A::operator=(const A& a)
//{
//	if (this != &a)
//	{
//		_a = a._a;
//	}
//	return *this;
//}
//
//int main()
//{
//	A a1;
//	A a2(a1);
//
//	return 0;
//}

//class Base1 { public: int _b1; };
//class Base2 { public: int _b2; };
//class Derive : public Base1, public Base2 { public: int _d; };
//int main() {
//	Derive d;
//	Base1* p1 = &d;
//	Base2* p2 = &d;
//	Derive* p3 = &d;
//	return 0;
//}

